xenctx: Add -n (--display-stack-pages) option to output larger stack
authorDon Slutz <dslutz@verizon.com>
Thu, 3 Apr 2014 19:06:54 +0000 (15:06 -0400)
committerIan Campbell <ian.campbell@citrix.com>
Fri, 4 Apr 2014 08:28:06 +0000 (09:28 +0100)
commit91450fc02bbdb7ffce3d2d578af37c274cd2b049
tree0a63e1bf8e5ed3451bd4fcbdcf68c5cb03d66558
parent26df1850758cdf8b160df31011331a97aa3e5b09
xenctx: Add -n (--display-stack-pages) option to output larger stack

Important: This is the stack size (also known as stack limit) to
display, not the configured stack size.

Note: use with caution (easy to get garbage).

Below is a pictures of a downwards growing configured 3 page stack,
and where the SP currently is.  Each box is a page.

+ pages                     -n 1    -n 2    -n 3

End of Memory
       +------------------+
       |                  |
       |                  |
       |                  |
       |                  |
       |                  |
       +------------------+
...
       +------------------+
       |                  |
       |                  |
       |                  |
       |                  |
MAX+3  |                  |
       +------------------+                   *
       |                  |                   |
       |                  |                   |
       |                  |                   |
       |                  |                   |
MAX+2  |                  |                   |
       +------------------+           *       |
       |                  |           |       |
       |                  |           |       |
       |                  |           |       |
       |                  |           |       |
MAX+1  |                  |           |       |
       +------------------+   *       |       |
       |                  |   |       |       |
SP --> |                  |   *       *       *
       |                  |
       |                  |
MAX    |                  |
       +------------------+
...
       +------------------+
       |                  |
       |                  |
       |                  |
       |                  |
0      |                  |
       +------------------+

Display using "-n 3" since the used stack pages is 3.

At a different time, the SP may be in the 1st page and so "-n 3"
will display garbage.

For example:

$ xenctx -s /boot/System.map-2.6.32-279.2.1.el6.x86_64 3 1 -n 1
...
Call Trace:
                    [<ffffffff81346898>] io_serial_out+0x18 <--
ffff880032bb1310:   [<ffffffff81346f51>] serial8250_console_putchar+0x31
ffff880032bb1330:   [<ffffffff813428de>] uart_console_write+0x3e
ffff880032bb1338:   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
ffff880032bb1370:   [<ffffffff813472ad>] serial8250_console_write+0xbd
ffff880032bb13c0:   [<ffffffff8106b8f5>] __call_console_drivers+0x75
ffff880032bb13f0:   [<ffffffff8106b95a>] _call_console_drivers+0x4a
ffff880032bb1410:   [<ffffffff8106be6e>] release_console_sem+0x4e
ffff880032bb1450:   [<ffffffff8106c628>] vprintk+0x248
ffff880032bb14f0:   [<ffffffff814fd363>] printk+0x41

$ xenctx -s /boot/System.map-2.6.32-279.2.1.el6.x86_64 3 1 -n 2
...
Call Trace:
                    [<ffffffff81346898>] io_serial_out+0x18 <--
ffff880032bb1310:   [<ffffffff81346f51>] serial8250_console_putchar+0x31
ffff880032bb1330:   [<ffffffff813428de>] uart_console_write+0x3e
ffff880032bb1338:   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
ffff880032bb1370:   [<ffffffff813472ad>] serial8250_console_write+0xbd
ffff880032bb13c0:   [<ffffffff8106b8f5>] __call_console_drivers+0x75
ffff880032bb13f0:   [<ffffffff8106b95a>] _call_console_drivers+0x4a
ffff880032bb1410:   [<ffffffff8106be6e>] release_console_sem+0x4e
ffff880032bb1450:   [<ffffffff8106c628>] vprintk+0x248
ffff880032bb14f0:   [<ffffffff814fd363>] printk+0x41

$ xenctx -s /boot/System.map-2.6.32-279.2.1.el6.x86_64 3 1 -n 3
...
Call Trace:
                    [<ffffffff81346898>] io_serial_out+0x18 <--
ffff880032bb1310:   [<ffffffff81346f51>] serial8250_console_putchar+0x31
ffff880032bb1330:   [<ffffffff813428de>] uart_console_write+0x3e
ffff880032bb1338:   [<ffffffff8100bc0e>] apic_timer_interrupt+0xe
ffff880032bb1370:   [<ffffffff813472ad>] serial8250_console_write+0xbd
ffff880032bb13c0:   [<ffffffff8106b8f5>] __call_console_drivers+0x75
ffff880032bb13f0:   [<ffffffff8106b95a>] _call_console_drivers+0x4a
ffff880032bb1410:   [<ffffffff8106be6e>] release_console_sem+0x4e
ffff880032bb1450:   [<ffffffff8106c628>] vprintk+0x248
ffff880032bb14f0:   [<ffffffff814fd363>] printk+0x41
ffff880032bb3f20:   [<ffffffff8100204c>] do_one_initcall+0x3c
ffff880032bb3f50:   [<ffffffff810b0eb1>] sys_init_module+0xe1
ffff880032bb3f80:   [<ffffffff8100b0f2>] system_call_fastpath+0x16

Signed-off-by: Don Slutz <Don@CloudSwitch.com>
Acked-by: Ian Campbell <ian.campbell@citrix.com>
tools/xentrace/xenctx.c